import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';

class PullRefreshPage extends StatefulWidget {
  @override
  PullRefreshPageState createState() => PullRefreshPageState();
}

class PullRefreshPageState extends State<PullRefreshPage> {
  List<String> items = [
    '北京',
    '上海',
    '广州',
    '深圳',
    '杭州',
    '苏州',
    '成都',
    '武汉',
    '郑州',
    '长沙',
    '云南',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '北京',
    '上海',
    '广州',
    '深圳',
    '杭州',
    '苏州',
    '成都',
    '武汉',
    '郑州',
    '长沙',
    '云南',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '北京',
    '上海',
    '广州',
    '深圳',
    '杭州',
    '苏州',
    '成都',
    '武汉',
    '郑州',
    '长沙',
    '云南',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '北京',
    '上海',
    '广州',
    '深圳',
    '杭州',
    '苏州',
    '成都',
    '武汉',
    '郑州',
    '长沙',
    '云南',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '长春',
    '黑龙江'
  ];
  final RefreshController _refreshController =
      RefreshController(initialRefresh: false);

  void _onRefresh() async {
    // monitor network fetch
    await Future.delayed(const Duration(milliseconds: 1000));
    items.clear();
    items = ['兰州', '西安', '银川', '乌鲁木齐', '西宁', '贵阳', '重庆', '六盘水'];
    setState(() {});
    // if failed,use refreshFailed()
    _refreshController.refreshCompleted();
  }

  void _onLoading() async {
    // monitor network fetch
    await Future.delayed(const Duration(milliseconds: 1000));
    // if failed,use loadFailed(),if no data return,use LoadNodata()
    items.add((items.length + 1).toString());
    if (mounted) setState(() {});
    _refreshController.loadComplete();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('刷新组件'),
      ),
      body: SmartRefresher(
        enablePullDown: true,
        enablePullUp: true,
        header: const ClassicHeader(
          //注意这里的footer因为axisDirection设置的关系是在屏幕上端，从而实现下拉加载消息历史
          refreshingText: '加载中...',
          idleText: '下拉刷新',
          completeText: '刷新完成',
          releaseText: '松开开始加载数据',
          //提示信息
          idleIcon: Icon(Icons.arrow_downward, color: Colors.grey, size: 20),
          spacing: 5,
        ),
        footer: const ClassicFooter(
          //注意这里的footer因为axisDirection设置的关系是在屏幕上端，从而实现下拉加载消息历史
          loadingText: '加载中...',
          idleText: '上拉加载',
          canLoadingText: '松开开始加载数据',
          //提示信息
          canLoadingIcon:
              Icon(Icons.arrow_downward, color: Colors.grey, size: 20),
          //提示图标
          idleIcon: Icon(Icons.arrow_downward, color: Colors.grey, size: 20),
          spacing: 5,
        ),
        controller: _refreshController,
        onRefresh: _onRefresh,
        onLoading: _onLoading,
        child: ListView.builder(
          itemBuilder: (c, i) => Center(child: Text(items[i])),
          itemCount: items.length,
          itemExtent: 100,
        ),
      ),
    );
  }

  @override
  void initState() {
    super.initState();
  }
}
